package common.data.base;


import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import javax.persistence.Id;
import javax.persistence.Version;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;

@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@ApiModel("对应数据库表的公共字段")
public abstract class BaseEntity implements Serializable {
    private static final long serialVersionUID = 6096976488575731777L;
    /**
     *  id 雪花算法生成对应行的记录id
     *  这个是主键定义要备注@id 否则 deleteByPrimaryKey不认为他的主键
     */
    @NotNull(message = "记录id不能为空")
    @Id
    private Long id;

    /**
     *  创建人用于跟踪谁创建也用于按人员查询数据
     */
    @NotNull(message = "创建人不能为空")
    private Long createdBy;
    /**
     *  创建人用于跟踪谁创建也用于按人员查询数据
     */
    private String creator;

    /**
     * 描述: 更新时间
     * 作者: lljm
     * 日期: 2024/6/6
     */
    @NotNull(message = "修改时间不能为空")
    private Date updatedTime;

    /**
     * 描述: 创建人
     * 作者: lljm
     * 日期: 2024/6/6
     */
    @NotNull(message = "创建时间不能为空")
    private Date createdTime;
    /**
     * 描述: 更新人
     * 作者: lljm
     * 日期: 2024/6/6
     */
    public Long updatedBy;
    /**
     * 操作者
     */
    private String modifier;
    /**
     *  状态 具体参考常量
     */
    @NotNull(message = "修改状态不能为空")
    private Byte status;
    /**
     *  版本 初始为1 由mybatis 插件自动维护
     */
    @Version
    private Long version;
}
